//
// Created by denglibin on 2019/7/10 0010.
//
/***概率算法**/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>


/**
 * 蒙特卡洛算法 求pi值
 * 随机产生n个点（n足够大，坐标在0-1），n个点中在圆内的点数与在正方形中的点数比值约等于 PI/4
 * @param
 * @return
 */
double MontePI(int n){
    double PI;
    double x, y; //点的横纵坐标
    int i, sum;
    sum = 0; //落在圆内的点数
    srand(time(NULL));
    for(i = 0; i < n; i++){
        x = (double)rand()/RAND_MAX;//产生0-1之间的随机数
        y = (double)rand()/RAND_MAX;//产生0-1之间的随机数
        if(x * x + y * y <= 1){ //在园内
            sum++;
        }
    }
    PI = 4.0 * sum / n;
    return PI;
}

int main4(){

    double  PI = MontePI(10000 * 1000);
    printf("PI = %f\n", PI);
    return 0;
}